home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 2410 / 2410.xpi / chrome / content / foxmarks-command.js < prev    next >
Text File  |  2010-01-28  |  2KB  |  74 lines

  1. /*
  2.  Copyright 2007 Foxmarks Inc.
  3.  
  4.  foxmarks-command.js: implements class Command, encapsulating
  5.  our commands executed (or derived from) Nodesets.
  6.  
  7.  */
  8.  
  9. // A command consists of:
  10. //  * an action (insert, delete, move, reorder, or modify)
  11. //  * a nid (node id, which identifies the node to operate upon)
  12. //  * args: a dict of command arguments, varying by command:
  13. //   * bnid specifies the sibling before which a node should
  14. //     be inserted/moved/reordered.
  15. //   * pnid specifies the nid of the parent for insert/move/reorder.
  16. //   * attrs is a dict that specifies attributes to be set on insert
  17. //     or modify.
  18.  
  19. function Command(action, nid, args)
  20. {
  21.     this.action = action;
  22.     this.nid = nid;
  23.     this.args = args;
  24.  
  25. }
  26.  
  27. Command.prototype = new Object;
  28.  
  29. function Commandset(set)
  30. {
  31.     this.set = set || [];
  32. }
  33.  
  34. Commandset.prototype = {
  35.     append: function(command) {
  36.         this.set.push(command);
  37.     },
  38.  
  39.     drop: function(command) {
  40.  
  41.         if (typeof command == 'number') {
  42.             this.set.splice(command, 1);
  43.         } else {
  44.             throw Error("drop only supports command index argument");
  45.         }
  46.     },
  47.  
  48.     stats: function() {
  49.         var count = {}
  50.         for (var i in this.set) {
  51.             var action = this.set[i].action;
  52.             count[action] = count[action] ? count[action] + 1 : 1;
  53.         }
  54.         return count;
  55.     },
  56.  
  57.     toJSONString: function() {
  58.         return this.set.toJSONString();
  59.     },
  60.  
  61.     execute: function(ns) {
  62.         // execute our commands against the supplied nodeset
  63.         for (var c = 0; c < this.set.length; ++c) {
  64.             ns.Execute(this.set[c]);
  65.         }
  66.     },
  67.  
  68.     get length() {
  69.         return this.set.length;
  70.     }
  71. }
  72.  
  73.  
  74.